package Handler;

import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import DAO.EmpleadoDao;
import Modelo.Empleado;


@WebServlet("/EmpleadoHandler")
public class EmpleadoHandler extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	private static String ADD = "/EmpleadoAdd.jsp";
    private static String Edit = "/Empleadoedit.jsp";
    private static String EmpleadoRecord="/ListEmpleado.jsp";
    private EmpleadoDao dao;
  
    public EmpleadoHandler() {
        super();
        dao = new EmpleadoDao();
    }

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String redirect="";       
        String action = request.getParameter("action");
        
		if (action.equalsIgnoreCase("editform")){         
		        redirect = Edit;            
		}
		else if (action.equalsIgnoreCase("addnew")){         
		        redirect = ADD;            
		}else if (action.equalsIgnoreCase("listEmpleado")) {
			redirect = EmpleadoRecord;
			request.setAttribute("Empleado", dao.getAllEmpleados());
		}
		 RequestDispatcher rd = request.getRequestDispatcher(redirect);
		 rd.forward(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String redirect="";
        String combId = request.getParameter("EmpleadoId");        
        String action = request.getParameter("action");
        DateFormat formato_fecha = new SimpleDateFormat("dd/MM/yyyy");
		if (action.equalsIgnoreCase("insert")) {
			Empleado objEmpleado = new Empleado();
			
			objEmpleado.setEmpleadoId(Integer.parseInt(request.getParameter("EmpleadoId")));
			objEmpleado.setDependenciaId(Integer.parseInt(request.getParameter("Dependencias")));
			try {
				objEmpleado.setFecha_Inicio(formato_fecha.parse(request.getParameter("Fecha_Inicio")));
				objEmpleado.setFecha_Fin(formato_fecha.parse(request.getParameter("Fecha_Fin")));
			} catch (ParseException e) {
				e.printStackTrace();
			}
			objEmpleado.setResponsable(request.getParameter("Responsable"));
			objEmpleado.setCargo(Integer.parseInt(request.getParameter("CargoId")));
			objEmpleado.setDescripcion(request.getParameter("Descripcion"));
			objEmpleado.setEstado(Integer.parseInt(request.getParameter("Estado")));
			
			dao.addEmpleado(objEmpleado);
			redirect = EmpleadoRecord;
			request.setAttribute("Empleado", dao.getAllEmpleados());
			System.out.println("Record Added Successfully");
		}

		else if (action.equalsIgnoreCase("delete")) {
			String Empleado_Id = request.getParameter("EmpleadoId");
			int lugid = Integer.parseInt(Empleado_Id);
			dao.removeEmpleado(lugid);
			redirect = EmpleadoRecord;
			request.setAttribute("Empleado", dao.getAllEmpleados());
			System.out.println("Record Deleted Successfully");

		} else if (action.equalsIgnoreCase("edit")) {
			String Empleado_Id = request.getParameter("EmpleadoId");
			int lugid = Integer.parseInt(Empleado_Id);
			Empleado objEmpleado = new Empleado();
			objEmpleado.setEmpleadoId(Integer.parseInt(request.getParameter("EmpleadoId")));
			objEmpleado.setDependenciaId(Integer.parseInt(request.getParameter("Dependencias")));
			try {
				objEmpleado.setFecha_Inicio(formato_fecha.parse(request.getParameter("Fecha_Inicio")));
				objEmpleado.setFecha_Fin(formato_fecha.parse(request.getParameter("Fecha_Fin")));
			} catch (ParseException e) {
				e.printStackTrace();
			}
			objEmpleado.setResponsable(request.getParameter("Responsable"));
			objEmpleado.setCargo(Integer.parseInt(request.getParameter("CargoId")));
			objEmpleado.setDescripcion(request.getParameter("Descripcion"));
			objEmpleado.setEstado(Integer.parseInt(request.getParameter("Estado")));
			request.setAttribute("Empleado", objEmpleado);
			redirect = EmpleadoRecord;
			System.out.println("Record updated Successfully");

		} else if (action.equalsIgnoreCase("listEmpleado")) {
			redirect = EmpleadoRecord;
			request.setAttribute("Empleado", dao.getAllEmpleados());
		} else {
			redirect = ADD;
		}

    RequestDispatcher rd = request.getRequestDispatcher(redirect);
    rd.forward(request, response);
	}

}
